/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package RRHH_controlador;
import Conexion.Conexion;
import Modelo.SIS_EVENTOS;
import RRHH_Modelo.*;
import it.sauronsoftware.ftp4j.FTPClient;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

/**
 *
 * @author equipo_4
 */
@MultipartConfig(maxFileSize = 10 * 1024 * 1024, maxRequestSize = 20 * 1024 * 1024, fileSizeThreshold = 5 * 1024 * 1024)
@WebServlet(name = "RHH_POSTULADO_CONTROLLER", urlPatterns = {"/RHH_POSTULADO_CONTROLLER"})
public class RHH_POSTULADO_CONTROLLER extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        RHH_USUARIO usuario = ((RHH_USUARIO) request.getSession().getAttribute("usr"));
        Conexion con = new Conexion(usuario.getUSUARIO(), usuario.getPASSWORD());
        String html = "false";
        try {
            con.Transacction();
            String evento = request.getParameter("proceso");
            switch (evento) {
                case "buscarConvocatoria":
                    html = buscarConvocatoria(request, con);
                    break;
                case "cargarpostulados":
                    html = cargarpostulados(request, con);
                    break;
                case "asignarpostuladoAconvocatoria":
                    html = asignarpostuladoAconvocatoria(request, con);
                    break;
                case "asignarconvocatoriaApostulado":
                    html = asignarconvocatoriaApostulado(request, con);
                    break;
                case "cargarImagen":
                    html = cargarImagen(request, con);
                    break;
                case "buscarPostulado":
                    html = buscarPostulado(request, con);
                    break;
                case "cargarconvocatoria":
                    html = cargarconvocatoria(request, con);
                    break;
                case "cargarkardex":            
                    html=cargarkardex(request,con);                    
                    break;
                case "modificarempleado":            
                    html=modificarempleado(request,con);                    
                    break;
                case "guardarusuario":            
                    html=guardarusuario(request,con);                    
                    break;
                case "postular":            
                    postular(request,con);                    
                    break;

            }
            con.commit();
        } catch (Exception ex) {
            con.rollback();
        }
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/plain");
        response.getWriter().write(html);
        con.Close();

    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
    private String buscarConvocatoria(HttpServletRequest request, Conexion con) throws Exception {
        RHH_CONVOCATORIA convocatoria = new RHH_CONVOCATORIA(con);
        convocatoria.setCon(con);
        String text = request.getParameter("text");
        List<RHH_CONVOCATORIA> lista = convocatoria.buscar(text);
        String html = "";
        RHH_CARGO cargo = new RHH_CARGO(con);
        RHH_CARGO_DEP_REG_SUC dep = new RHH_CARGO_DEP_REG_SUC(con);
        RHH_DEPARTAMENTO departamento = new RHH_DEPARTAMENTO(con);
        RHH_REGIONAL regional = new RHH_REGIONAL(con);
        RHH_SUCURSAL sucursal = new RHH_SUCURSAL(con);
        for (int i = 0; i < lista.size(); i++) {
            String color = "green";
            String estado = "<span onclick='estado(this," + lista.get(i).getID() + ")'>Habilitado</span>";
            if (lista.get(i).getESTADO() == 1) {
                color = "white";
                estado = "<span onclick='estado(this," + lista.get(i).getID() + ")'>InHabilitado</span>";
            }
            cargo = cargo.BuscarXid(lista.get(i).getID_CARGO());
            dep = dep.BuscarXCargos(cargo.getID());
            departamento = departamento.BuscarXid(dep.getID_DEPTO());
            sucursal = sucursal.BuscarXid(dep.getID_SUCURSAL());
            regional = regional.BuscarXid(dep.getID_REGIONAL());
            String dpto = "";
            String reg = "";
            String suc = "";
            if (departamento != null) {
                dpto = departamento.getDESCRIPCION();
            } else {
                departamento = new RHH_DEPARTAMENTO(con);
            }
            if (sucursal != null) {
                suc = sucursal.getDESCRIPCION();
            } else {
                sucursal = new RHH_SUCURSAL(con);
            }
            if (regional != null) {
                reg = regional.getDESCRIPCION();
            } else {
                regional = new RHH_REGIONAL(con);
            }
            html += "<div id='cardPostulado' onclick='seleccionarConvocatoria(" + lista.get(i).getID() + ")' style='background:" + color + "'>"
                    + "<div class=\"centrado negrilla\">" + cargo.getDESCRIPCION() + "</div><br>\n"
                    + "<span class=\"negrilla\">Fecha:</span>" + lista.get(i).getFECHA_VENCIMIENTO_CONVOCATORIA() + "<br>"
                    + "<span class=\"negrilla\">Departamento:</span>" + dpto + "<br>"
                    + "<span class=\"negrilla\">Regional:</span>" + reg + "<br>"
                    + "<span class=\"negrilla\">Sucursal:</span>" + suc + "<br>"
                    + "<div style='height:50px;'><div>" + lista.get(i).getDESCRIPCION() + "</div>\n"
                    + "<span class=\"negrilla\">Observacion:</span>"
                    + "<span>" + lista.get(i).getOBSERVACIONES() + "</span>"
                    + "</div><div class=\"centrado\">"
                    + "</div>"
                    + "</div>";
        }
        return html;
    }
   
    private String cargarImagen(HttpServletRequest request, Conexion con) throws Exception {
        SIS_EVENTOS even=new SIS_EVENTOS();
        String ci=request.getParameter("ci");
        String foto=request.getParameter("foto");
        String src= even.imagenBase64(ci,foto);
        return "{\"ci\":\""+ci+"\",\"foto\":\""+src+"\"}";
    }
    private String buscarPostulado(HttpServletRequest request, Conexion con) throws Exception {
        RHH_POSTULADO postulado = new RHH_POSTULADO(con);
        postulado.setCon(con);
        String text = request.getParameter("text");
        String min = request.getParameter("min");
        String max = request.getParameter("max");
        RHH_PERSONA persona=new RHH_PERSONA(con);
        List<RHH_POSTULADO> lista = postulado.buscarDatosPersona(text,min,max);
        int limite=postulado.buscarDatosPersonaLimite(text);
        String html = "";
        for (int i = 0; i < lista.size(); i++) {
            persona = new RHH_PERSONA(con).BuscarxID(lista.get(i).getID_PERSONA());
            String nombre = persona.getPRIMER_NOMBRE() + " ";
            if (persona.getSEGUNDO_NOMBRE() != null || !persona.getSEGUNDO_NOMBRE().equals("null")) {
                nombre += persona.getSEGUNDO_NOMBRE() + " ";
            }
            nombre += persona.getPRIMER_APELLIDO();
            if (persona.getSEGUNDO_APELLIDO() != null || !persona.getSEGUNDO_APELLIDO().equals("null")) {
                nombre += " " + persona.getSEGUNDO_APELLIDO() + " ";
            }
            html += "<div data-ci='" + persona.getCI()+ "' data-foto='"+persona.getFOTO()+"' class='cardPostuladosimple'>"
                    + "<div class='negrilla centrado'>"+persona.getCI()+"</div>"
                    + "<div class='centrado' style='display:inline-block; height: 60px; width: 90px;'>"
                    + "   <img src='../img/imagen3.jpg' alt='' style='width: 100%; height: 100%;'>"
                    + "</div>"
                    + "<div class='negrilla' style='height: 26px'>" + nombre
                    + "</div>"
                    + "<span onclick='editarPostulado("+persona.getID()+")'>Editar </span><span onclick='postularconvocatoria("+lista.get(i).getID()+")'>Postular</span></div>";
        }
        return "{\"dato\":\""+html+"\",\"limite\":\""+limite+"\"}";
    }
    
    private String asignarpostuladoAconvocatoria(HttpServletRequest request, Conexion con) throws SQLException {
        
        int id = Integer.parseInt(request.getParameter("id"));
        int postulado = Integer.parseInt(request.getParameter("postulado"));
        int e = Integer.parseInt(request.getParameter("e"));
        RHH_POSTULADO_CONVOCATORIA postuconvo = new RHH_POSTULADO_CONVOCATORIA(postulado, id);
        postuconvo.setCon(con);
        if(e==1){
           postuconvo.Eliminar();
        }else{
            postuconvo.Insertar();
        }
        return cargarpostulados(request, con);
    }
    private String asignarconvocatoriaApostulado(HttpServletRequest request, Conexion con) throws Exception {
        int id = Integer.parseInt(request.getParameter("id"));
        int conv = Integer.parseInt(request.getParameter("postulado"));
        int e = Integer.parseInt(request.getParameter("e"));
        RHH_POSTULADO_CONVOCATORIA postuconvo = new RHH_POSTULADO_CONVOCATORIA(id, conv);
        postuconvo.setCon(con);
        if(e==1){
           postuconvo.Eliminar();
        }else{
            postuconvo.Insertar();
        }
        return cargarconvocatoria(request, con);
    }
    private String cargarpostulados(HttpServletRequest request, Conexion con) throws SQLException {
        int id = Integer.parseInt(request.getParameter("id"));
        List<RHH_POSTULADO> conConvocatoria = new RHH_POSTULADO(con).BuscarEnConvocatoria(id);
        List<RHH_POSTULADO> sinConvocatoria = new RHH_POSTULADO(con).BuscarSinLaConvocatoria(id);
        RHH_POSTULADO postulado = new RHH_POSTULADO(con);
        RHH_PERSONA persona = new RHH_PERSONA(con);
        String habilitados = "";
        String deshabilitados = "";
        for (int i = 0; i < sinConvocatoria.size(); i++) {
            postulado = sinConvocatoria.get(i);
            persona = persona.BuscarxID(postulado.getID_PERSONA());
            String nombre = persona.getPRIMER_NOMBRE() + " ";
            if (persona.getSEGUNDO_NOMBRE() != null || !persona.getSEGUNDO_NOMBRE().equals("null")) {
                nombre += persona.getSEGUNDO_NOMBRE() + " ";
            }
            nombre += persona.getPRIMER_APELLIDO();
            if (persona.getSEGUNDO_APELLIDO() != null || !persona.getSEGUNDO_APELLIDO().equals("null")) {
                nombre += " " + persona.getSEGUNDO_APELLIDO() + " ";
            }
            deshabilitados += "<div data-ci='" + persona.getCI()+ "' data-foto='"+persona.getFOTO()+"' class='draggable ui-draggable ui-draggable-handle ui-droppable' data-estado='inactivo' data-e='0' data-id=" + postulado.getID() + ">"
                    + "<div class='centrado' style='display:inline-block; height: 40px; width: 50px;'>\n"
                    + "   <img src='../img/imagen3.jpg' alt='' style='width: 100%; height: 100%;'>\n"
                    + "</div>"
                    + "<span class='negrillaenter'>" + nombre
                    + "</span></div>";
        }
        for (int i = 0; i < conConvocatoria.size(); i++) {
            postulado = conConvocatoria.get(i);
            persona = persona.BuscarxID(postulado.getID_PERSONA());
            String src = "../img/imagen3.jpg";
            String nombre = persona.getPRIMER_NOMBRE() + " ";
            if (persona.getSEGUNDO_NOMBRE() != null || !persona.getSEGUNDO_NOMBRE().equals("null")) {
                nombre += persona.getSEGUNDO_NOMBRE() + " ";
            }
            nombre += persona.getPRIMER_APELLIDO();
            if (persona.getSEGUNDO_APELLIDO() != null || !persona.getSEGUNDO_APELLIDO().equals("null")) {
                nombre += " " + persona.getSEGUNDO_APELLIDO() + " ";
            }
            
            habilitados += "<div data-ci='" + persona.getCI()+ "' data-foto='"+persona.getFOTO()+"' class='draggable ui-draggable ui-draggable-handle ui-droppable' data-estado='inactivo' data-e='1' data-id=" + postulado.getID() + ">"
                    + "<div class='centrado' style='display:inline-block; height: 40px; width: 50px;'>\n"
                    + "   <img src='" + src + "' alt='' style='width: 100%; height: 100%;'>\n"
                    + "</div>"
                    + "<span class='negrillaenter'>" + nombre
                    + "</span></div>";
        }
        String html = "<div class='contenedor50 c1' style=\"border-right: solid white thin;\" data-estado='activo'>";
        html += deshabilitados + "</div><div class='contenedor50 c2' data-estado='activo'>" + habilitados + "</div>";
        return html;
    }
    private String cargarconvocatoria(HttpServletRequest request, Conexion con) throws Exception {
        int id = Integer.parseInt(request.getParameter("id"));
        List<RHH_CONVOCATORIA> nopostulado = new RHH_CONVOCATORIA(con).BuscarSinPostulado(id);
        List<RHH_CONVOCATORIA> postulado = new RHH_CONVOCATORIA(con).BuscarEnPostulado(id);
        RHH_CARGO cargo=new RHH_CARGO(con);
        RHH_CONVOCATORIA convo=new RHH_CONVOCATORIA(con);
        String habilitados = "";
        String deshabilitados = "";
        for (int i = 0; i < nopostulado.size(); i++) {
            convo = nopostulado.get(i);
            cargo=cargo.BuscarXid(convo.getID_CARGO());
            deshabilitados += "<div class='draggable ui-draggable ui-draggable-handle ui-droppable' data-estado='inactivo' data-e='0' data-id=" + convo.getID() + ">"
                            + "<div class='centrado'>"+cargo.getDESCRIPCION()+"</div>"
                            + "</div>";
        }
        for (int i = 0; i < postulado.size(); i++) {
            convo = postulado.get(i);
            cargo=cargo.BuscarXid(convo.getID_CARGO());
            habilitados += "<div class='draggable ui-draggable ui-draggable-handle ui-droppable' data-estado='inactivo' data-e='1' data-id=" + convo.getID() + ">"
                            + "<div class='centrado'>"+cargo.getDESCRIPCION()+"</div>"
                            + "</div>";
        }
        
        String html = "<div class='contenedor50 c1' style=\"border-right: solid white thin;\" data-estado='activo'>";
        html += deshabilitados + "</div><div class='contenedor50 c2' data-estado='activo'>" + habilitados + "</div>";
        return html;
    }
        
    // kardex
    
    private String cargarkardex(HttpServletRequest request, Conexion con) throws SQLException, IOException, ServletException {
        int id=Integer.parseInt(request.getParameter("id"));
        RHH_PERSONA persona=new RHH_PERSONA(con);
        persona=persona.BuscarxID(id);
        RHH_DATOS dato=new RHH_DATOS(con);
        List<RHH_PERSONA_DATOS> listdato = new RHH_PERSONA_DATOS(con).BuscarXidPersona(id); 
        String listaDatos="";
        for (int i = 0; i < listdato.size(); i++) 
        {
            dato=dato.BuscarXid(listdato.get(i).getID_DATOS());
            
            listaDatos+="[\""+listdato.get(i).getID_DATOS()+"\",\""+listdato.get(i).getDATO()+"\",\""+dato.getTIPO()+"\",\""+listdato.get(i).getCADUCIDAD()+"\",\""+dato.getESTADO_CADUCIDAD()+"\"],";
        }
        RHH_PERSONA_PROFESION personaProfesion=new RHH_PERSONA_PROFESION(con);
        personaProfesion=personaProfesion.BuscarXpersona(id);
        String profe=personaProfesion!=null?personaProfesion.getID_PROFESION()+"":"0";
        String ano=personaProfesion!=null?personaProfesion.getANOS()+"":"0";
        String foto=".../img/imagen3.jpg";
        if(persona.getFOTO()!=null && !persona.getFOTO().equals("null")){
            foto = "ftp://postulado:oracle123@192.168.0.101/" + persona.getCI() + "/" + persona.getFOTO();
        }
        if(listaDatos.length()>0)listaDatos=listaDatos.substring(0,listaDatos.length()-1);
        String html="{\"ci\":\""+persona.getCI()+"\",\"nombre\":\""+persona.getPRIMER_NOMBRE()
                    +"\",\"nombre2\":\""+persona.getSEGUNDO_NOMBRE()+"\",\"apellido1\":\""+persona.getPRIMER_APELLIDO()
                    +"\",\"apellido2\":\""+persona.getSEGUNDO_APELLIDO()+"\",\"curriculo\":\""+persona.getCURRICULUM()
                    +"\",\"foto\":\""+foto+"\",\"correo\":\""+persona.getEMAIL()+"\",\"telefono\":\""+persona.getTELEFONO()
                    +"\",\"regional\":\""+persona.getLUGAR_EMISION()+"\",\"año\":\""+ano+"\",\"profesion\":\""+profe+"\",\"listadatos\":["+listaDatos+"]}";
        
        return html;
    }
    private void postular(HttpServletRequest request, Conexion con) throws SQLException {
        int tipo = Integer.parseInt(request.getParameter("tipo"));
        int conv = Integer.parseInt(request.getParameter("conv"));
        int post = Integer.parseInt(request.getParameter("post"));
        if(tipo==0)
        {
                 RHH_POSTULADO_CONVOCATORIA postu = new RHH_POSTULADO_CONVOCATORIA(post, conv);
                 postu.setCon(con);
                 postu.Insertar();
        }
        else
        {
                 RHH_POSTULADO_CONVOCATORIA postu = new RHH_POSTULADO_CONVOCATORIA(post, conv);
                 postu.setCon(con);
                 postu.Eliminar();
        }
        con.Close();        
   }
    private String modificarempleado(HttpServletRequest request, Conexion con) throws Exception {
            RHH_PERSONA persona = new RHH_PERSONA(con);
            String ci = request.getParameter("ci");
            persona=persona.Buscar(ci);
            String depto = request.getParameter("depto");
            String nombre1 = request.getParameter("nombre1");
            String nombre2 = request.getParameter("nombre2");
            String apepat = request.getParameter("apepat");
            String apemat = request.getParameter("apemat");
            String email = request.getParameter("email");
            String telf = request.getParameter("telf");
            String pass = request.getParameter("pass");
            Part part = request.getPart("curr");
            InputStream in = part.getInputStream();           

            if(part!=null && part.getSubmittedFileName().length()>0){
                String parrr="curriculum_"+part.getSubmittedFileName();
                persona.setCURRICULUM(parrr);
                subirftp(in, ci, "curriculum_"+part.getSubmittedFileName(), part.getSize(), "");
            }
            persona.setEMAIL(email);
            persona.setLUGAR_EMISION(depto);
            persona.setPRIMER_APELLIDO(apepat);
            persona.setPRIMER_NOMBRE(nombre1);
            persona.setSEGUNDO_NOMBRE(nombre2);
            persona.setSEGUNDO_APELLIDO(apemat);
            persona.setTELEFONO(telf);
            persona.Modificar();
            int idper=persona.getID();
            if(pass.length()>0){
                RHH_POSTULADO postulado=new RHH_POSTULADO(con).BuscarXPersona(idper);
                postulado.cambiarPass(pass);    
            }
            List<RHH_DATOS> dtlist = new RHH_DATOS(con).TodosDatos();
            SimpleDateFormat sd=new SimpleDateFormat("dd/mm/yyyy");
            RHH_PERSONA_DATOS pd = new RHH_PERSONA_DATOS(con);
            for (int i = 0; i < dtlist.size(); i++) 
            {
                pd = new RHH_PERSONA_DATOS(con);
                String dato = request.getParameter(dtlist.get(i).getID()+"");
                if(dato!=null)
                {
                    if(dato.length()>0)
                    {
                        
                        pd.Eliminar(idper,dtlist.get(i).getID());
                        pd.setID_DATOS(dtlist.get(i).getID());
                        pd.setID_PERSONA(idper);
                        pd.setDATO(dato);
                        pd.Insertar();
                    }
                }
            }
            List<RHH_DATOS> doclist = new RHH_DATOS(con).TodosDocs();

            for (int i = 0; i < doclist.size(); i++) 
            {
                pd = new RHH_PERSONA_DATOS(con);
                Part pdoc = request.getPart(doclist.get(i).getID()+"");
                String caduca = request.getParameter(doclist.get(i).getID()+"_o");
                if(pdoc!=null)
                {   
                    String nom = pdoc.getSubmittedFileName();
                    if(nom.length()>0)
                    {
                        pd.Eliminar(idper,doclist.get(i).getID());
                        if(caduca!=null && caduca.length()>0){
                            
                            pd.setCADUCIDAD(sd.parse(caduca));
                        }
                        pd.setID_DATOS(doclist.get(i).getID());
                        pd.setID_PERSONA(idper);
                        pd.setDATO(pdoc.getSubmittedFileName());
                        pd.Insertar();
                        in = pdoc.getInputStream();
                        subirftp(in, ci, pdoc.getSubmittedFileName(), pdoc.getSize(), "");
                    }
                }
            }                
            String anosexp = request.getParameter("anos");        
            String prof = request.getParameter("prof");

            RHH_PERSONA_PROFESION pf = new RHH_PERSONA_PROFESION(con);
            pf.setID_PERSONA(idper);
            pf.setID_PROFESION(Integer.parseInt(prof));
            pf.setANOS(Integer.parseInt(anosexp));
            pf.EliminarXid();
            pf.Insertar();
             
            Part part45 = request.getPart("file");
            if(part45!=null && part45.getSubmittedFileName().length()>0){
                InputStream in45 = part45.getInputStream();
                RHH_PERSONA per = new RHH_PERSONA(con).BuscarxID(idper);
                String nombre = "perfil_"+part45.getSubmittedFileName(); 
                long size = part45.getSize();
                subirftp(in45, per.getCI()+"", nombre, size,per.getFOTO());
                per.fotoperfil(nombre);        
                in45.close();
            }
            con.commit();
            return idper+"";
    }
    private String guardarusuario(HttpServletRequest request, Conexion con) throws Exception {
        RHH_PERSONA persona = new RHH_PERSONA(con);
        String ci = request.getParameter("ci");
        String depto = request.getParameter("depto");
        String nombre1 = request.getParameter("nombre1");
        String nombre2 = request.getParameter("nombre2");
        String apepat = request.getParameter("apepat");
        String apemat = request.getParameter("apemat");
        String email = request.getParameter("email");
        String telf = request.getParameter("telf");
        String pass = request.getParameter("pass");
        Part part = request.getPart("curr");
        InputStream in = part.getInputStream();           

        if(part!=null && part.getSubmittedFileName().length()>0){
            String parrr="curriculum_"+part.getSubmittedFileName();
            persona.setCURRICULUM(parrr);
            subirftp(in, ci, "curriculum_"+part.getSubmittedFileName(), part.getSize(), "");
        }
        persona.setCI(Integer.parseInt(ci));
        persona.setEMAIL(email);
        persona.setLUGAR_EMISION(depto);
        persona.setPRIMER_APELLIDO(apepat);
        persona.setPRIMER_NOMBRE(nombre1);
        persona.setSEGUNDO_NOMBRE(nombre2);
        persona.setSEGUNDO_APELLIDO(apemat);
        persona.setTELEFONO(telf);
        int idper=persona.Insertar();
        RHH_POSTULADO postulado=new RHH_POSTULADO(0, idper, pass);
        postulado.setCon(con);
        postulado.Insertar();    
        List<RHH_DATOS> dtlist = new RHH_DATOS(con).TodosDatos();
        SimpleDateFormat sd=new SimpleDateFormat("dd/mm/yyyy");
        RHH_PERSONA_DATOS pd = new RHH_PERSONA_DATOS(con);
        for (int i = 0; i < dtlist.size(); i++) 
        {
            pd = new RHH_PERSONA_DATOS(con);
            String dato = request.getParameter(dtlist.get(i).getID()+"");
            if(dato!=null)
            {
                if(dato.length()>0)
                {

                    pd.setID_DATOS(dtlist.get(i).getID());
                    pd.setID_PERSONA(idper);
                    pd.setDATO(dato);
                    pd.Insertar();
                }
            }
        }
        List<RHH_DATOS> doclist = new RHH_DATOS(con).TodosDocs();

        for (int i = 0; i < doclist.size(); i++) 
        {
            pd = new RHH_PERSONA_DATOS(con);
            Part pdoc = request.getPart(doclist.get(i).getID()+"");
            String caduca = request.getParameter(doclist.get(i).getID()+"_o");
            if(pdoc!=null)
            {   
                String nom = pdoc.getSubmittedFileName();
                if(nom.length()>0)
                {
                    if(caduca!=null && caduca.length()>0){

                        pd.setCADUCIDAD(sd.parse(caduca));
                    }
                    pd.setID_DATOS(doclist.get(i).getID());
                    pd.setID_PERSONA(idper);
                    pd.setDATO(pdoc.getSubmittedFileName());
                    pd.Insertar();
                    in = pdoc.getInputStream();
                    subirftp(in, ci, pdoc.getSubmittedFileName(), pdoc.getSize(), "");
                }
            }
        }                
        String anosexp = request.getParameter("anos");        
        String prof = request.getParameter("prof");

        RHH_PERSONA_PROFESION pf = new RHH_PERSONA_PROFESION(con);
        pf.setID_PERSONA(idper);
        pf.setID_PROFESION(Integer.parseInt(prof));
        pf.setANOS(Integer.parseInt(anosexp));
        pf.Insertar();

        Part part45 = request.getPart("file");
        if(part45!=null && part45.getSubmittedFileName().length()>0){
            InputStream in45 = part45.getInputStream();
            RHH_PERSONA per = new RHH_PERSONA(con).BuscarxID(idper);
            String nombre = "perfil_"+part45.getSubmittedFileName(); 
            long size = part45.getSize();
            subirftp(in45, per.getCI()+"", nombre, size,per.getFOTO());
            per.fotoperfil(nombre);        
            in45.close();
        }
        return idper+"";
    }
    private void subirftp(InputStream in, String ci, String nombre, long size,String old) throws Exception
    {
        if(in!=null && !nombre.equals(""))
        {
            FTPClient client = new FTPClient();          
            client.connect("192.168.0.101");
            client.login("postulado","oracle123");

            try{
                client.createDirectory(ci);
                client.changeDirectory(ci);
            }
            catch(Exception e)
            {
                client.changeDirectory(ci);
            }
            try{
                client.deleteFile(old);
            }catch(Exception e){}                
            client.upload(nombre, in, size, 0, null);

            client.disconnect(false);
        }       
    }
   

}
